/**
  1. 暴露数据:
        module.exports = value;
        exports.xxx = value;
  2. 引入数据:
    	const module = require(模块名或模块路径);
 */
//如何使用一个模块，取决于：模块的编写者暴露的是什么
const m1 = require('./modules/module1')
const {jia,jian} = require('./modules/module2')
let m3 = require('./modules/module3')
const uniq = require('uniq')

console.log(m1) //输出m1暴露的字符串
console.log(jia(1,2)) //调用jia
console.log(jian(7,3)) //调用jian
console.log(m3) //输出m3

//演示保护内部实现
m3 = [1,3,5,7,9] // 对m3进行修改
//m3.age = 99 //注意：此行的修改会影响模块3中person的age
console.log(m3) // [1,3,5,7,9] 
let m33 = require('./modules/module3') //再次引入模块3
console.log(m33) // {name:'tom',age:18,sex:'男'}

//测试一下uniq
const arr = [1,1,10,3,2,4,4,4,6,5]
const result = uniq(arr)
console.log(result)
